/**
 * 封装 axios 请求模块
 */
// eslint-disable-next-line indent
import axios from 'axios'
import store from '@/store'

import bigint from 'json-bigint'
const JSONBig = bigint({ storeAsString: true })

const request = axios.create({
    baseURL: 'http://10.117.47.233:8089/', // 接口基础路径

    // transformResponse 允许自定义原始的响应数据（字符串）
    transformResponse: [function(data) {
        try {
            // 如果转换成功则返回转换的数据结果
            return JSONBig.parse(data)
        } catch (err) {
            // 其他数据的话，直接原样返回
            return {
                data
            }
        }
    }]
})

// 请求拦截器
// Add a request interceptor
request.interceptors.request.use(
    function(config) {
        // 请求发起会经过这里
        // config：本次请求的请求配置对象
        // console.log(config)
        const { user } = store.state
        if (user && user.token) {
            config.headers.Authorization = `Bearer ${user.token}`
        }
        if (config.url.startsWith('/app')) {
            config.url = config.url.slice(4)
        }
        // 注意：这里务必要返回 config 配置对象，否则请求就停在这里出不去了
        return config
    },
    function(error) {
        // 如果请求出错了（还没有发出去）会进入这里
        return Promise.reject(error)
    }
)

// 响应拦截器
export default request